#include<bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn=1e5+10;
const int p=1e9 + 7;

int n, m;

int qmi(int a, int b){
	int res=1;
	while(b){
		if(b&1){
			res=res*a%p;
		}
		b>>=1;
		a=a*a%p;
	}
	return res;
}

// phi(n) = n*pai((pi-1/pi))   [pai 连乘]
int phi(int n){
	int res=p;
	for(int i=2;i<=n/i;i++){
		if(n%i){
			continue;
		}
		// 质数
		res=res/i*(i-1);
		while(n%i==0){ // 把这个因子 除干净
			n/=i;
		}
	}
	if(n>1){ // 还有最后一个质因子
		res=res/n*(n-1);
	}
	return res;
}


void solve(){
	cin>>n>>m;
	int phic=phi(p);
	int b=1;
	for(int i=1;i<=m;i++){
		b=b*i%phic;
	}
	int ans= qmi(n, b);
	cout<<ans<<'\n';
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0),cout.tie(0);
	solve();
	return 0;
}
